home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / animatin / anim_q2z / symetry / wsym.lst < prev    next >
File List  |  1995-04-26  |  4KB  |  175 lines

  1. '
  2. ' symetry
  3. '
  4. ~WIND_GET(0,4,x&,y&,wid&,hei&)
  5. ncol&=WORK_OUT(13)
  6. rez&=XBIOS(4)
  7. DIM x1&(512),y1&(512),x2&(512),y2&(512),msg&(7)
  8. ~FRE(0)
  9. '
  10. '
  11. '
  12. hand&=WIND_CREATE(&X101111,x&,y&,wid&,hei&)
  13. title$=" Symetry "+CHR$(0)
  14. t%=V:title$
  15. ~WIND_SET(hand&,2,CARD(SWAP(t%)),CARD(t%),0,0)
  16. ~WIND_OPEN(hand&,x&,y&,wid&,hei&)
  17. ~WIND_GET(hand&,4,wx&,wy&,ww&,wh&)
  18. ~FORM_DIAL(3,0,0,0,0,wx&,wy&,ww&,wh&)
  19. '
  20. '
  21. LET quit!=FALSE
  22. @r
  23. clr&=RANDOM(ncol&-2)+2
  24. COLOR clr&
  25. '
  26. DO
  27.   e&=EVNT_MULTI(&X110000,0,0,0,0,0,0,0,0,0,0,0,0,0,V:msg&(0),2)
  28.   IF e& AND &X10000
  29.     SELECT msg&(0)
  30.     CASE 20
  31.       @redraw
  32.     CASE 22
  33.       LET quit!=TRUE
  34.     CASE 23
  35.       @big
  36.     CASE 27
  37.       @size
  38.     CASE 28
  39.       @move
  40.     ENDSELECT
  41.   ENDIF
  42.   EXIT IF quit!=TRUE
  43.   '
  44.   ' do the lines stuff here
  45.   '
  46.   GRAPHMODE 1
  47.   COLOR clr&
  48.   LINE x1&+wx&,y1&+wy&,x2&+wx&,y2&+wy&
  49.   LINE mx&-(x1&+wx&),y1&+wy&,mx&-(x2&+wx&),y2&+wy&
  50.   LINE mx&-(x1&+wx&),my&-y1&,mx&-(x2&+wx&),my&-y2&
  51.   LINE x1&+wx&,my&-y1&,(x2&+wx&),my&-y2&
  52.   IF turn.on!
  53.     GRAPHMODE 1
  54.     COLOR 1
  55.     x1a&=x1&(a% MOD 256)
  56.     x2a&=x2&(a% MOD 256)
  57.     y1a&=y1&(a% MOD 256)
  58.     y2a&=y2&(a% MOD 256)
  59.     LINE x1&(a% MOD 256)+wx&,y1&(a% MOD 256)+wy&,x2&(a% MOD 256)+wx&,y2&(a% MOD 256)+wy&
  60.     LINE mx&-(x1a&+wx&),y1a&+wy&,mx&-(x2a&+wx&),y2a&+wy&
  61.     LINE mx&-(x1a&+wx&),my&-y1a&,mx&-(x2a&+wx&),my&-y2a&
  62.     LINE x1a&+wx&,my&-y1a&,x2a&+wx&,my&-y2a&
  63.     GRAPHMODE 1
  64.     COLOR clr&
  65.   ENDIF
  66.   '
  67.   '
  68.   x1&(a% MOD 256)=x1&
  69.   y1&(a% MOD 256)=y1&
  70.   x2&(a% MOD 256)=x2&
  71.   y2&(a% MOD 256)=y2&
  72.   '
  73.   IF xdif1&+x1&+wx&>mx& OR xdif1&+x1&<0
  74.     xdif1&=-xdif1&
  75.   ENDIF
  76.   IF xdif2&+x2&+wx&>mx& OR xdif2&+x2&<0
  77.     xdif2&=-xdif2&
  78.   ENDIF
  79.   IF ydif1&+y1&+wy&>=my& OR ydif1&+y1&<0
  80.     ydif1&=-ydif1&
  81.   ENDIF
  82.   IF ydif2&+y2&+wy&>my& OR ydif2&+y2&<0
  83.     ydif2&=-ydif2&
  84.   ENDIF
  85.   ADD x1&,xdif1&
  86.   ADD x2&,xdif2&
  87.   ADD y1&,ydif1&
  88.   ADD y2&,ydif2&
  89.   INC a%
  90.   IF a%>254
  91.     turn.on!=TRUE
  92.   color.test:
  93.     IF ncol&>2
  94.       oclr&=clr&
  95.       REPEAT
  96.         clr&=RANDOM(ncol&)
  97.       UNTIL clr&<>oclr&
  98.     ENDIF
  99.     '    IF clr&=1
  100.     '    GOTO color.test
  101.     '  ENDIF
  102.     COLOR clr&
  103.     CLR a%
  104.     @r1
  105.   ENDIF
  106. LOOP
  107. ~WIND_CLOSE(hand&)
  108. ~WIND_DELETE(hand&)
  109. '
  110. '
  111. PROCEDURE redraw
  112.   ~WIND_GET(hand&,4,wx&,wy&,ww&,wh&)
  113.   BOUNDARY 0
  114.   DEFFILL 1,2,8
  115.   PBOX wx&,wy&,wx&+ww&-1,wy&+wh&-1
  116.   CLR a%
  117.   @r
  118.   my&=wy&+wh&
  119.   mx&=wx&+ww&
  120.   turn.on!=FALSE
  121. RETURN
  122. '
  123. PROCEDURE r
  124.   x1&=RANDOM(ww&)
  125.   x2&=RANDOM(ww&)
  126.   y1&=RANDOM(wh&)
  127.   y2&=RANDOM(wh&)
  128.   @r1
  129. RETURN
  130. '
  131. PROCEDURE r1
  132.   xdif1&=RANDOM(6)+1
  133.   xdif2&=RANDOM(3)+1
  134.   ydif1&=RANDOM(5)+1
  135.   ydif2&=RANDOM(3)+1
  136. RETURN
  137. '
  138. PROCEDURE big
  139.   IF big!
  140.     ~WIND_CALC(0,&X101111,oldx&,oldy&,oldw&,oldh&,ox&,oy&,ow&,oh&)
  141.     ~WIND_SET(hand&,5,ox&,oy&,ow&,oh&)
  142.     ~WIND_CALC(1,&X101111,ox&,oy&,ow&,oh&,ox&,oy&,ow&,oh&)
  143.     CLIP ox&,oy&,ow&,oh&
  144.     ~FORM_DIAL(3,0,0,0,0,x&,y&,wid&,hei&)
  145.   ELSE
  146.     oldx&=wx&
  147.     oldy&=wy&
  148.     oldw&=ww&
  149.     oldh&=wh&
  150.     ~WIND_SET(hand&,5,x&,y&,wid&,hei&)
  151.     CLIP x&,y&,wid&,hei&
  152.     ~FORM_DIAL(3,0,0,0,0,x&,y&,wid&,hei&)
  153.   ENDIF
  154.   big!=NOT big!
  155. RETURN
  156. '
  157. PROCEDURE move
  158.   CLIP msg&(4),msg&(5),msg&(6),msg&(7)
  159.   ~WIND_SET(msg&(3),5,msg&(4),msg&(5),msg&(6),msg&(7))
  160.   ~FORM_DIAL(3,0,0,0,0,x&,y&,wid&,hei&)
  161. RETURN
  162. '
  163. '
  164. PROCEDURE size
  165.   sx&=msg&(4)
  166.   sy&=msg&(5)
  167.   sw&=msg&(6)
  168.   sh&=msg&(7)
  169.   ~WIND_CALC(1,&X101111,msg&(4),msg&(5),msg&(6),msg&(7),c1&,c2&,c3&,c4&)
  170.   CLIP c1&,c2&,c3&,c4&
  171.   ~WIND_SET(hand&,5,sx&,sy&,sw&,sh&)
  172.   big!=FALSE
  173.   ~FORM_DIAL(3,0,0,0,0,x&,y&,wid&,hei&)
  174. RETURN
  175.